#include "_Font.h"

void _Font::loadFont(std::string file, const unsigned int pixelSize,
                     std::string fontId) {
  //如果在font_list找不到该fontId
  if (font_list.find(fontId) == font_list.end()) {
    TTF_Font* font = TTF_OpenFont(file.c_str(), pixelSize);
    if (font != nullptr) {
      //无错误才放进去
      font_list.insert(std::pair<std::string, TTF_Font*>(fontId, font));
    } else {
      SDL_LogError(0, "字体加载失败：%s,%s", file.c_str(), SDL_GetError());
    }
  } else {
    SDL_LogError(0, "该fontId已经存在：%s", fontId.c_str());
  }
}

TTF_Font* _Font::getSDLFont(std::string fontId) {
  //如果可以找到
  if (font_list.find(fontId) != font_list.end()) {
    return font_list[fontId];
  } else {
    SDL_LogError(0, "找不到该fontId：%s,%s", fontId.c_str(), SDL_GetError());
    return nullptr;  //如果找不到，报错，返回空指针
  }
}

bool _Font::hasSDLFont(std::string fontId) {
  if (font_list.find(fontId) != font_list.end()) {
    return true;
  } else {
    return false;
  }
}

_Font::~_Font() {
  //关闭字体
  for (std::pair<std::string, TTF_Font*> i : font_list) {
    TTF_CloseFont(i.second);
  }
}